package br.gov.ms.tce.modelo.bean;

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;


/**
*  @class Email
 * @author Anderson Paulino
 * @date 27/05/2011
 *
 */
@Entity
@Table( schema = "comum", name = "email")
public class Email implements java.io.Serializable {

	/**
	 * serialVersionUID
	 */
	private static final long serialVersionUID = -7862522562104811463L;
	private EmailId id;
	private TipoEmailEnum tipoEmail;
	private String descricao;
	private boolean padrao;
	private Pessoa pessoa;

	public Email() {
	}

	public Email(EmailId id, TipoEmailEnum tipoEmail, String descricao,	boolean padrao) {
		this.id = id;
		this.tipoEmail = tipoEmail;
		this.descricao = descricao;
		this.padrao = padrao;
	}

	@EmbeddedId
	@AttributeOverrides({
			@AttributeOverride(name = "codPessoa", column = @Column(name = "cod_pessoa", nullable = false)),
			@AttributeOverride(name = "codTipoEmail", column = @Column(name = "cod_tipo_email", nullable = false)),
			@AttributeOverride(name = "descricao", column = @Column(name = "descricao", nullable = false))})
	public EmailId getId() {
		return this.id;
	}

	public void setId(EmailId id) {
		this.id = id;
	}

	@Enumerated
	@Column(name = "cod_tipo_email", nullable = false, insertable = false, updatable = false)
	public TipoEmailEnum getTipoEmail() {
		return this.tipoEmail;
	}

	public void setTipoEmail(TipoEmailEnum tipoEmail) {
		this.tipoEmail = tipoEmail;
	}

	@Column(name = "descricao", nullable = false, length = 150, insertable=false, updatable=false)
	public String getDescricao() {
		return this.descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	@Column(name = "padrao", nullable = false)
	public boolean isPadrao() {
		return this.padrao;
	}

	public void setPadrao(boolean padrao) {
		this.padrao = padrao;
	}

	/**
	 * @return Obtém o valor da propriedade pessoa
	 */
	@ManyToOne
	@JoinColumn(name = "cod_pessoa", nullable = false, insertable = false, updatable = false)
	public Pessoa getPessoa() {
		return pessoa;
	}

	/**
	 * @param pessoa configura a propriedade pessoa
	 */
	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}
	
	

}
